home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / HARDWARE.SWG / 0004_CPU-ID.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  1KB  |  67 lines

  1. {
  2. > How do i get info about witch CPU it is in the current computer??
  3. }
  4.  
  5. {$F+}
  6.  
  7. Const
  8.   CPU_Type : Array[1..4] of String[5] = ('8086', '80286', '80386', '80486');
  9.   Cpu8086  = 1;
  10.   Cpu80286 = 2;
  11.   Cpu80386 = 3;
  12.   Cpu80486 = 4;
  13. Var
  14.   Result : Byte;
  15.  
  16.  
  17. Function GetCPU_Type: Byte; Assembler;
  18.  
  19. Asm
  20.   MOV   DX,Cpu8086
  21.   PUSH  SP
  22.   POP   AX
  23.   CMP   SP,AX
  24.   JNE   @OUT
  25.   MOV   DX, Cpu80286
  26.   PUSHF
  27.   POP   AX
  28.   or   AX,4000h
  29.   PUSH  AX
  30.   POPF
  31.   PUSHF
  32.   POP   AX
  33.   TEST  AX,4000h
  34.   JE   @OUT
  35.   MOV DX, Cpu80386
  36.   {"DB 66h" indicates '386 extended instruction}
  37.   DB 66h; MOV   BX, SP      {MOV EBX, ESP}
  38.   DB 66h, 83h, 0E4h, 0FCh   {AND ESP, FFFC}
  39.   DB 66h; PUSHF             {PUSHFD}
  40.   DB 66h; POP AX            {POP EAX}
  41.   DB 66h; MOV   CX, AX      {MOV ECX, EAX}
  42.   DB 66h, 35h, 00h
  43.   DB 00h, 04h, 00           {XOR EAX, 00040000}
  44.   DB 66h; PUSH   AX     {PUSH EAX}
  45.   DB 66h; POPF              {POPFD}
  46.   DB 66h; PUSHF             {PUSHFD}
  47.   DB 66h; POP   AX     {POP EAX}
  48.   DB 66h, 25h, 00h
  49.   DB 00h, 04h, 00h          {AND EAX, 00040000}
  50.   DB 66h, 81h, 0E1h, 00h
  51.   DB 00h, 04h, 00h          {AND ECX, 00040000}
  52.   DB 66h; CMP   AX, CX      {CMP EAX, ECX}
  53.   JE @Not486
  54.   MOV DX, Cpu80486
  55. @Not486:
  56.   DB 66h; PUSH   CX         {PUSH EXC}
  57.   DB 66h; POPF              {POPFD}
  58.   DB 66h; MOV   SP, BX      {MOV ESP, EBX}
  59. @Out:
  60.   MOV AX, DX
  61. end;
  62.  
  63. begin
  64.   Result := GetCPU_Type;
  65.   Writeln(Result);
  66. end.
  67.